package com.ftg.learnmybatis.learnio;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;

/**
 * 学习一下mybatis核心方法传递参数
 *  java --  方法  框架 全是由java提供参数，....
 *    大量实例化. 对使用者要求较高，（不适用推广）
 *    分离 : 代码实现也配置分离
 *      java + xml 开发方式 （趋之若鹜） CV 民工 (完成 || 。。。 || )
 *      java + xml xml xml xml xml xm lxm lxm lxmlxml xml (爆炸 类爆炸  配置爆炸 同步开发臃肿)
 *
 *      javabean + 注解开发模式
 *
 *      java 用编码的方式 显示声明配置文件
 *
 *       @Select("select * from student")
 *      public List<Student> list(){}
 *
 *      主体框架全是 （）
 *      1 : xmlbase configuration
 *      2 : javaapi configuration
 *      3 : annotation configuration
 *
 * mybatis
 *      1 : xmlbase configuration
 *      1.1 ibatis 原生开发模式
 *      1.2 接口 + xml
 *
 * @author kangjx
 * @version 1.0
 * @date 2023/3/14 上午8:18
 */
public class Example06 {

    /**
     * 基于 javabase config
     * @param args
     */
    public static void main(String[] args) {
//        String mybatisconfig = "mybatis-config.xml";
//        Reader reader = Resources.getResourceAsReader(mybatisconfig);
        // 核心类  Sqlsessionfactorybuilder
        SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();

        Configuration config = new Configuration();
        //为mybatis核心配置类 Configuration 提供 环境

        TransactionFactory tf = new JdbcTransactionFactory();

        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl("jdbc:mysql://localhost:3306/homework");
        dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");

        Environment env = new Environment("mysql",tf,dataSource);

        config.setEnvironment(env);
        //mapped statments 集合要有这个 student.xml
//        config.addMappers("config");

        //执行完成以后，要对数据源进行的操作需要的相关信息全部指定了
        SqlSessionFactory ssf = ssfb.build(config);

        SqlSession session = ssf.openSession();
//        System.out.println(session.selectList("student.sel"));

        session.close();

    }

}
